package com.xyh.concurrency.example.Thread;

import lombok.extern.slf4j.Slf4j;

import java.util.concurrent.*;

/**
 * 演示FutureTask 异步的调用线程返回结果
 * 线程执行完成后返回结果建议使用 FutureTask
 */
@Slf4j
public class FutureExample1 {


    public static void main(String[] args) throws Exception {
        FutureTask<String> futureTask = new FutureTask<>(new Callable<String>() {
            @Override
            public String call() throws Exception {
                log.info("线程返回");
                Thread.sleep(5000);
                return "hello";
            }
        });

        new Thread(futureTask).start();
        //继续向下执行等待结果输出
        log.info("输出结果");
        Thread.sleep(2000);
        //线程会一直等到,当前的地址执行完成
        System.out.println("输出结果" + futureTask.get());

    }
}
